﻿using System;
using System.Runtime.Serialization;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reflection;

namespace BrainTechLLC
{

    public enum EnumerationDefinitionTypes
    {

        AbilityProviderCategories = 0,

        EntityStates,

        EntityStateCategories,

        EntityIntentionTypes,

        EntityActionTypes,

        ParameterTypes,

        ParameterCategories,

        ObjectTypes,

        ObjectCategories,

        TerrainTypes,

        Max
    }

    #if NO_SILVERLIGHT
[Browsable(true)]
[TypeConverter(typeof(ExpandableObjectConverter))]
#endif
    public interface ITypeLookup
    {
        ConstructorInfo GetConstructorInfo(Type t);
        Type GetType(string typeName);
        Type GetType(string typeName, bool throwOnTypeNotFound);
        List<Type> FindAvailableInterfaces(Type interfaceType);
        T CreateInstanceOfType<T>(Type type) where T : class;
        T CreateInstanceOfType<T>(string typeName) where T : class;
        object CreateInstanceFromType(string typeName);
        object CreateInstanceFromType(Type t);
        List<ITypeDescription> AllTypesThatImplement(string baseClass);
        List<ITypeDescription> AllTypesThatImplement(Type t);   
    }
}
